import java.math.BigDecimal;

public class Test {
    public static void main(String[] args) {
        // BigInteger类似，BigDecimal可以表示一个任意大小且精度完全准确的浮点数。
        BigDecimal bd = new BigDecimal("123.4567");
        System.out.println(bd.multiply(bd));

        // BigDecimal用scale()表示小数位数，例如：
        BigDecimal d1 = new BigDecimal("123.45");
        BigDecimal d2 = new BigDecimal("123.4500");
        BigDecimal d3 = new BigDecimal("1234500");
        System.out.println(d1.scale()); // 2,两位小数
        System.out.println(d2.scale()); // 4
        System.out.println(d3.scale()); // 0
        System.err.println("-----------");
        // stripTrailingZeros()方法，可以将一个BigDecimal格式化为一个相等的，但去掉了末尾0的BigDecimal
        BigDecimal d11 = new BigDecimal("123.4500");
        BigDecimal d22 = d11.stripTrailingZeros();
        System.out.println(d11.scale()); // 4
        System.out.println(d22.scale()); // 2,因为去掉了00
        System.err.println("-----------");
        // 比较BigDecimal
        // 在比较两个BigDecimal的值是否相等时，要特别注意，使用equals()方法不但要求两个BigDecimal
        BigDecimal d111 = new BigDecimal("123.456");
        BigDecimal d222 = new BigDecimal("123.45600");
        System.out.println(d111.equals(d222)); // false,因为scale不同
        System.out.println(d111.equals(d222.stripTrailingZeros())); // true,因为d2去除尾部0后scale变为3
        System.out.println(d111.compareTo(d222)); // 0 = 相等, -1 = d1 < d2, 1 = d1 > d2

    }
}
